SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[spGenerarValoresDeLiquidacion3]
@Mes Int,
@Anio Int,
@Tipo Int,
@CabeceraDeLiquidacion INT
AS
-- 20/08/2008 a Causa de los cambios en tb_suborganizaciones del NivelEnseñanza agregue en EGB el 13
SET NOCOUNT ON
SET DATEFORMAT DMY

-- SI EXISTE EL RESUMEN PARA LA CABECERA DE LIQUIDACION
IF EXISTS(SELECT * FROM tb_ValoresDeSubsidios2 WHERE CabeceraDeLiquidacion = @CabeceraDeLiquidacion)
	DELETE FROM tb_ValoresDeSubsidios2 WHERE CabeceraDeLiquidacion = @CabeceraDeLiquidacion


Declare Organizaciones Cursor Static For
	Select Organizacion, idLiquidacion From tb_Liquidaciones Where IdCabeceraLiquidacion = @CabeceraDeLiquidacion
	--Select Organizacion, idLiquidacion From tb_Liquidaciones Where Month(Hasta) = @Mes And Year(Hasta) = @Anio And IdCabeceraLiquidacion = @CabeceraDeLiquidacion

Declare @MontoDescuento Float, @MontoHaberes Float, @IdOrganizacion Int, @IdLiquidacion Int, @TotalEGB Float,
	@TotalPOLIMODAL Float, @TotalSUPERIOR Float, @TotalIndefinido Float, @AnexoI Float, @AnexoII Float, @AnexoIII Float, @ATransferir Float,
	@SueldoBruto Float, @PorcDeSubsidio Float, @TotalNulo Float, @TotalEstimuloEGB Float, @TotalEstimuloPOLIMODAL Float, @TotalEstimuloSUPERIOR Float,
	@TotalEstimuloINDEFINIDO Float, @TotalEstimulo Float, @TotalEstimulo2EGB Float, @TotalEstimulo2POLIMODAL Float, @TotalEstimulo2SUPERIOR Float,
	@TotalEstimulo2INDEFINIDO Float, @TotalEstimulo2 Float

Select @TotalEstimuloEGB = 0, @TotalEstimuloPOLIMODAL = 0, @TotalEstimuloSUPERIOR = 0, @TotalEstimuloINDEFINIDO = 0, @TotalEstimulo = 0
Select @TotalEstimulo2EGB = 0, @TotalEstimulo2POLIMODAL = 0, @TotalEstimulo2SUPERIOR = 0, @TotalEstimulo2INDEFINIDO = 0, @TotalEstimulo2 = 0


Open Organizaciones

Fetch Next From Organizaciones Into @idOrganizacion, @IdLiquidacion

While @@Fetch_Status = 0
Begin
	Select @AnexoI = 0, @AnexoII = 0, @AnexoIII = 0, @Atransferir = 0, @TotalEGB = 0, @TotalPOLIMODAL = 0, @TotalINDEFINIDO = 0, @TotalSUPERIOR = 0
--NIVEL EGB
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) 
	And P.SubOrganizacion = So.idSubOrganizacion 
--	And So.Nivel = 3
	And So.Nivel in (3,13)
	And Liquidacion  = @IdLiquidacion And Concepto In (24) And S.CargoSalarial <> 1
	
	/*Select @MontoDescuento = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 3
	And Liquidacion  = @IdLiquidacion And Concepto In (13,10) And S.CargoSalarial <> 1*/

	Select @TotalEGB = @MontoHaberes 

	Select @TotalEstimuloEGB = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) 
	And P.SubOrganizacion = So.idSubOrganizacion 
--	And So.Nivel = 3
	And So.Nivel in (3,13)
	And Liquidacion  = @IdLiquidacion And Concepto In (33) And S.CargoSalarial <> 1

	Select @TotalEstimulo2EGB = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) 
	And P.SubOrganizacion = So.idSubOrganizacion 
--	And So.Nivel = 3
	And So.Nivel in (3,13)
	And Liquidacion  = @IdLiquidacion And Concepto In (36) And S.CargoSalarial <> 1


--NIVEL POLIMODAL
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones 
	And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) 
	And P.SubOrganizacion = So.idSubOrganizacion
	 And So.Nivel = 4
	And Liquidacion  = @IdLiquidacion And Concepto In (24) And S.CargoSalarial <> 1
	
	/*Select @MontoDescuento = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 4
	And Liquidacion  = @IdLiquidacion And Concepto In (13,10) And S.CargoSalarial <> 1*/

	Select @TotalPOLIMODAL = @MontoHaberes 

	Select @TotalEstimuloPOLIMODAL = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 4
	And Liquidacion  = @IdLiquidacion And Concepto In (33) And S.CargoSalarial <> 1

	Select @TotalEstimulo2POLIMODAL = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 4
	And Liquidacion  = @IdLiquidacion And Concepto In (36) And S.CargoSalarial <> 1

--NIVEL SUPERIOR
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion 
	And So.Nivel = 5
	And Liquidacion  = @IdLiquidacion And Concepto In (24) And  S.CargoSalarial <> 1
	
	/*Select @MontoDescuento = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 5
	And Liquidacion  = @IdLiquidacion And Concepto In (13,10) And S.CargoSalarial <> 1*/

	Select @TotalSUPERIOR = @MontoHaberes 

	Select @TotalEstimuloSUPERIOR = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion
	 And So.Nivel = 5
	And Liquidacion  = @IdLiquidacion And Concepto In (33) And  S.CargoSalarial <> 1

	Select @TotalEstimulo2SUPERIOR = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion
	 And So.Nivel = 5
	And Liquidacion  = @IdLiquidacion And Concepto In (36) And  S.CargoSalarial <> 1

--NIVEL INDEFINIDO	
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones
	 And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion
	 And So.Nivel = 12
	And Liquidacion  = @IdLiquidacion And Concepto In (24) And S.CargoSalarial <> 1

	/*Select @MontoDescuento = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 12
	And Liquidacion  = @IdLiquidacion And Concepto In (13,10) And S.CargoSalarial <> 1*/

	Select @TotalINDEFINIDO = @MontoHaberes 

	Select @TotalEstimuloINDEFINIDO = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 12
	And Liquidacion  = @IdLiquidacion And Concepto In (33) And S.CargoSalarial <> 1

	Select @TotalEstimulo2INDEFINIDO = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion And So.Nivel = 12
	And Liquidacion  = @IdLiquidacion And Concepto In (36) And S.CargoSalarial <> 1

--NIVEL NULO	
	Select @MontoHaberes = 0, @MontoDescuento = 0
	Select @MontoHaberes = IsNull(Sum(MontoHaberes),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion 
--	And (So.Nivel Is Null Or So.Nivel Not In (12,5,4,3)) 	
	And (So.Nivel Is Null Or So.Nivel Not In (13,12,5,4,3)) 	---Adriana  20/08/2008
	And Liquidacion  = @IdLiquidacion And Concepto In (24) And S.CargoSalarial <> 1

	/*Select @MontoDescuento = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones And SS.FechaBaja Is Null And P.SubOrganizacion = So.idSubOrganizacion And (So.Nivel Is Null Or So.Nivel Not In (12,5,4,3))
	And Liquidacion  = @IdLiquidacion And Concepto In (13,10) And S.CargoSalarial <> 1*/

	Select @TotalNulo = @MontoHaberes 

	Select @TotalEGB = @TotalEGB + @TotalINDEFINIDO + @TotalNulo

	--17/05/2004
	Select @TotalEstimulo2EGB = @TotalEstimulo2EGB + @TotalEstimulo2INDEFINIDO

	Select @AnexoII = IsNull(Sum(MontoDescuento),0) From tb_RegistroDeLiquidaciones Where Liquidacion = @idLiquidacion And Concepto = 30

	--Select @AnexoIII = IsNull(Sum(MontoDescuento),0) From tb_RegistroDeLiquidaciones Where Liquidacion = @idLiquidacion And Concepto In (11, 10)

	
	/* EL ISS SE SUBSIDIA A TODOS EL 100%?? */
	Select @AnexoIII = IsNull(Sum(MontoDescuento),0) 
	From tb_RegistroDeLiquidaciones RL, tb_ServiciosAgentes S, tb_SubServiciosAgentes SS, tb_Plazas P, tb_SubOrganizaciones SO, tb_Organizaciones O 
	Where Rl.Servicio = idServicioAgente And ServicioAgente = idServicioAgente And IdPlaza = Plaza And P.Organizacion = idOrganizaciones And Org = IdOrganizaciones 
	And SS.idSubServicio = (Select max(idSubServicio)  From tb_SubServiciosAgentes Where ServicioAgente = idServicioAgente) And P.SubOrganizacion = So.idSubOrganizacion 
	And Liquidacion  = @IdLiquidacion And Concepto In (10, 11)

	--Select @TotalEstimulo = Sum(MontoHaberes) From tb_RegistroDeLiquidaciones Where Liquidacion = @IdLiquidacion And Concepto = 33

	Select @TotalEstimuloEGB = @TotalEstimuloEGB + @TotalEstimuloINDEFINIDO --+ @TotalEstimulo2INDEFINIDO
	Select @TotalEstimulo = @TotalEstimuloEGB + @TotalEstimuloPOLIMODAL + @TotalEstimuloSUPERIOR
	Select @TotalEstimulo2 = @TotalEstimulo2EGB + @TotalEstimulo2POLIMODAL + @TotalEstimulo2SUPERIOR

	Select @TotalEGB = @TotalEGB - (@TotalEstimuloEGB + @TotalEstimulo2EGB)
	Select @TotalPolimodal = @TotalPolimodal - (@TotalEstimuloPolimodal + @TotalEstimulo2Polimodal)
	Select @TotalSuperior = @TotalSuperior - (@TotalEstimuloSuperior + @TotalEstimulo2Superior)

	Select @AnexoI = @TotalEGB + @TotalPOLIMODAL + @TotalSUPERIOR + @TotalEstimulo +  @TotalEstimulo2

	Select @ATransferir = @AnexoI - (@AnexoII + @AnexoIII)

	Insert tb_ValoresDeSubsidios2 Select @idOrganizacion, @TotalEGB, @TotalPOLIMODAL, @TotalSUPERIOR, @TotalEstimuloEGB, @TotalEstimuloPOLIMODAL, @TotalEstimuloSUPERIOR, @TotalEstimulo, @TotalEstimulo2EGB, @TotalEstimulo2POLIMODAL, @TotalEstimulo2SUPERIOR, @TotalEstimulo2, @AnexoI, @AnexoII, @AnexoIII, @ATransferir, @Anio, @Mes, @Tipo, @CabeceraDeLiquidacion

	Select @TotalEstimuloEGB = 0, @TotalEstimuloPOLIMODAL = 0, @TotalEstimuloSUPERIOR = 0, @TotalEstimuloINDEFINIDO = 0, @TotalEstimulo = 0

	Select @TotalEstimulo2EGB = 0, @TotalEstimulo2POLIMODAL = 0, @TotalEstimulo2SUPERIOR = 0, @TotalEstimulo2INDEFINIDO = 0, @TotalEstimulo2 = 0	
	
	Select @ATransferir = @AnexoI - (@AnexoII + @AnexoIII)

	Fetch Next From Organizaciones Into @idOrganizacion, @IdLiquidacion
End
	
Close Organizaciones
Deallocate Organizaciones
GO
